package com.tdam2014.grupo11;

import java.util.ArrayList;

import org.utnrepasa.net.principal.ControladorCliente;
import org.utnrepasa.net.util.Course;
import org.utnrepasa.net.util.MultiplayerGame;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.ListView;
import android.widget.Spinner;
import android.widget.Toast;

public class ActivityMonojugadorCrearPartida extends Activity {

	private ListView lstCrearPartida;
	private Button btnCrearPartida;
	private ControladorCliente controlador;
	private AdapterListaCrearPartida adapterCrearPartida;
	private Spinner spnCantPreguntas;
	private ArrayAdapter<Integer> adapterCantidadPreguntas;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_monojugador_crear_partida);
		try {
			controlador = ControladorCliente.getInstancia(this);
			controlador.solicitarMaterias();
		} catch (Exception e) {
			Log.e(MultijugadorCrearPartida.class.getName(), e.getMessage());
			Toast.makeText(this, e.getMessage(), Toast.LENGTH_LONG).show();
		}
		lstCrearPartida = (ListView) findViewById(R.id.lstCrearPartida);
		btnCrearPartida = (Button) findViewById(R.id.btnCrearPartida);
		spnCantPreguntas = (Spinner) findViewById(R.id.spnCantidadPreguntas);
		adapterCantidadPreguntas = new ArrayAdapter<Integer>(this,
				android.R.layout.simple_list_item_1);
		ArrayList<Integer> cantidadesPreguntas = new ArrayList<Integer>();
		cantidadesPreguntas.add(5);
		cantidadesPreguntas.add(10);
		cantidadesPreguntas.add(15);
		cantidadesPreguntas.add(20);
		adapterCantidadPreguntas.addAll(cantidadesPreguntas);
		spnCantPreguntas.setAdapter(adapterCantidadPreguntas);
		adapterCrearPartida = new AdapterListaCrearPartida(
		new ArrayList<Course>(), this);
		lstCrearPartida.setAdapter(adapterCrearPartida);
		btnCrearPartida.setOnClickListener(new OnClickListener() {

			@Override
			public void onClick(View v) {
				ArrayList<Course> seleccionadas = adapterCrearPartida
						.getSeleccionados();

				if (seleccionadas.size() > 0) {
					
					controlador.setCreandoPartida(1, (Integer)spnCantPreguntas.getSelectedItem(), seleccionadas);
					controlador.crearPartida();
				} else {
					runOnUiThread(new Runnable() {
						@Override
						public void run() {
							Toast.makeText(
									ActivityMonojugadorCrearPartida.this,
									"Seleccione al menos una materia",
									Toast.LENGTH_LONG).show();
						}
					});
				}
			}
		});
	}

	public void recibirPartidas(ArrayList<Course> materias) {
		try {
			adapterCrearPartida.setLista(materias);
			runOnUiThread(new Runnable() {

				@Override
				public void run() {
					adapterCrearPartida.notifyDataSetChanged();
				}
			});
		} catch (Exception e) {
			Log.e(MultijugadorCrearPartida.class.getName(), e.getMessage());
			Toast.makeText(this, e.getMessage(), Toast.LENGTH_LONG).show();
		}
	}

	public void recibirRespuestaCrearPartida(boolean creacionCorrecta, int idPartida) {
		try {
			if (creacionCorrecta) {
				
				MultiplayerGame game = new MultiplayerGame(idPartida, 1, (Integer)spnCantPreguntas.getSelectedItem());
				controlador.setPartidaEnJuego(game);
				Intent intent = new Intent(
						ActivityMonojugadorCrearPartida.this,
						ActivityPregunta.class);
				startActivity(intent);
			}
		} catch (final Exception e) {
			runOnUiThread(new Runnable() {
				
				@Override
				public void run() {
					Log.e(MultijugadorCrearPartida.class.getName(), e.getMessage());
					Toast.makeText(ActivityMonojugadorCrearPartida.this, e.getMessage(), Toast.LENGTH_LONG).show();
				}
			});
		}
	}

}
